/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.colegiatura.be;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.cip.esymons.general.be.Especialidad;
import org.cip.esymons.general.be.Titulo;
import org.cip.esymons.general.be.Universidad;

/**
 *
 * @author ADMINISTRADOR
 */
@Entity
@Table(name = "col_formacion_profesional")
//@NamedQueries({@NamedQuery(name = "FormacionProfesional.findAll", query = "SELECT f FROM FormacionProfesional f"), @NamedQuery(name = "FormacionProfesional.findByFopCodigo", query = "SELECT f FROM FormacionProfesional f WHERE f.fopCodigo = :fopCodigo"), @NamedQuery(name = "FormacionProfesional.findByFopFechaprom", query = "SELECT f FROM FormacionProfesional f WHERE f.fopFechaprom = :fopFechaprom"), @NamedQuery(name = "FormacionProfesional.findByFopresolANRnum", query = "SELECT f FROM FormacionProfesional f WHERE f.fopresolANRnum = :fopresolANRnum"), @NamedQuery(name = "FormacionProfesional.findByFopresolANRfecha", query = "SELECT f FROM FormacionProfesional f WHERE f.fopresolANRfecha = :fopresolANRfecha"), @NamedQuery(name = "FormacionProfesional.findByFopfechaResGrado", query = "SELECT f FROM FormacionProfesional f WHERE f.fopfechaResGrado = :fopfechaResGrado"), @NamedQuery(name = "FormacionProfesional.findByFoprevInstitucion", query = "SELECT f FROM FormacionProfesional f WHERE f.foprevInstitucion = :foprevInstitucion"), @NamedQuery(name = "FormacionProfesional.findByFoprevFecha", query = "SELECT f FROM FormacionProfesional f WHERE f.foprevFecha = :foprevFecha"), @NamedQuery(name = "FormacionProfesional.findByFopresRecNum", query = "SELECT f FROM FormacionProfesional f WHERE f.fopresRecNum = :fopresRecNum"), @NamedQuery(name = "FormacionProfesional.findByFopresRecFolio", query = "SELECT f FROM FormacionProfesional f WHERE f.fopresRecFolio = :fopresRecFolio"), @NamedQuery(name = "FormacionProfesional.findByFopresRecHoja", query = "SELECT f FROM FormacionProfesional f WHERE f.fopresRecHoja = :fopresRecHoja")})
public class FormacionProfesional implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "fop_codigo")
    private Integer fopCodigo;
    @Basic(optional = false)
    @Column(name = "fop_fechaprom")
    @Temporal(TemporalType.DATE)
    private Date fopFechaprom;
    @Basic(optional = false)
    @Column(name = "fop_resolANRnum")
    private String fopresolANRnum;
    @Basic(optional = false)
    @Column(name = "fop_resolANRfecha")
    @Temporal(TemporalType.DATE)
    private Date fopresolANRfecha;
    @Basic(optional = false)
    @Column(name = "fop_fechaResGrado")
    @Temporal(TemporalType.DATE)
    private Date fopfechaResGrado;
    @Column(name = "fop_revInstitucion")
    private String foprevInstitucion;
    @Column(name = "fop_revFecha")
    @Temporal(TemporalType.DATE)
    private Date foprevFecha;
    @Column(name = "fop_resRecNum")
    private String fopresRecNum;
    @Column(name = "fop_resRecFolio")
    private String fopresRecFolio;
    @Column(name = "fop_resRecHoja")
    private String fopresRecHoja;
    @Column(name = "fop_tituloExtranjero")
    private String foptituloExtranjero;
    @Column(name = "fop_instAcademica")
    private String fopinstAcademica;
    @Column(name = "fop_nuevoTitulo")
    private String fopnuevoTitulo;
    @Column(name = "fop_resRecFecha")
    @Temporal(TemporalType.DATE)
    private Date fopresRecFecha;
    @Column(name = "fop_revNumero")
    private String foprevNumero;


    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fopCodigo", fetch = FetchType.LAZY)
    private List<Preinscripcion> preinscripcionCollection;

    @JoinColumn(name = "esp_codigo", referencedColumnName = "esp_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Especialidad espCodigo;

    @JoinColumn(name = "uni_codigo", referencedColumnName = "uni_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Universidad uniCodigo;

    @JoinColumn(name = "col_codigo", referencedColumnName = "col_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Colegiado colegiado;
    
    @JoinColumn(name = "tit_codigo", referencedColumnName = "tit_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Titulo titulo;

    public Titulo getTitulo() {
        return titulo;
    }

    public void setTitulo(Titulo titulo) {
        this.titulo = titulo;
    }

    public FormacionProfesional() {
    }

    public FormacionProfesional(Integer fopCodigo) {
        this.fopCodigo = fopCodigo;
    }

    public FormacionProfesional(Integer fopCodigo, Date fopFechaprom, String fopresolANRnum, Date fopresolANRfecha, Date fopfechaResGrado) {
        this.fopCodigo = fopCodigo;
        this.fopFechaprom = fopFechaprom;
        this.fopresolANRnum = fopresolANRnum;
        this.fopresolANRfecha = fopresolANRfecha;
        this.fopfechaResGrado = fopfechaResGrado;
    }

    public Integer getFopCodigo() {
        return fopCodigo;
    }

    public void setFopCodigo(Integer fopCodigo) {
        this.fopCodigo = fopCodigo;
    }

    public String getFopinstAcademica() {
        return fopinstAcademica;
    }

    public void setFopinstAcademica(String fopinstAcademica) {
        this.fopinstAcademica = fopinstAcademica;
    }

    public String getFoptituloExtranjero() {
        return foptituloExtranjero;
    }

    public void setFoptituloExtranjero(String foptituloExtranjero) {
        this.foptituloExtranjero = foptituloExtranjero;
    }

    public Colegiado getColegiado() {
        return colegiado;
    }

    public void setColegiado(Colegiado colegiado) {
        this.colegiado = colegiado;
    }

    public Date getFopFechaprom() {
        return fopFechaprom;
    }

    public void setFopFechaprom(Date fopFechaprom) {
        this.fopFechaprom = fopFechaprom;
    }

    public String getFopresolANRnum() {
        return fopresolANRnum;
    }

    public void setFopresolANRnum(String fopresolANRnum) {
        this.fopresolANRnum = fopresolANRnum;
    }

    public Date getFopresolANRfecha() {
        return fopresolANRfecha;
    }

    public void setFopresolANRfecha(Date fopresolANRfecha) {
        this.fopresolANRfecha = fopresolANRfecha;
    }

    public Date getFopfechaResGrado() {
        return fopfechaResGrado;
    }

    public void setFopfechaResGrado(Date fopfechaResGrado) {
        this.fopfechaResGrado = fopfechaResGrado;
    }

    public String getFoprevInstitucion() {
        return foprevInstitucion;
    }

    public void setFoprevInstitucion(String foprevInstitucion) {
        this.foprevInstitucion = foprevInstitucion;
    }

    public Date getFoprevFecha() {
        return foprevFecha;
    }

    public void setFoprevFecha(Date foprevFecha) {
        this.foprevFecha = foprevFecha;
    }

    public String getFopresRecNum() {
        return fopresRecNum;
    }

    public void setFopresRecNum(String fopresRecNum) {
        this.fopresRecNum = fopresRecNum;
    }

    public String getFopresRecFolio() {
        return fopresRecFolio;
    }

    public void setFopresRecFolio(String fopresRecFolio) {
        this.fopresRecFolio = fopresRecFolio;
    }

    public String getFopresRecHoja() {
        return fopresRecHoja;
    }

    public void setFopresRecHoja(String fopresRecHoja) {
        this.fopresRecHoja = fopresRecHoja;
    }

    public List<Preinscripcion> getPreinscripcionCollection() {
        return preinscripcionCollection;
    }

    public void setPreinscripcionCollection(List<Preinscripcion> preinscripcionCollection) {
        this.preinscripcionCollection = preinscripcionCollection;
    }

    public Especialidad getEspCodigo() {
        return espCodigo;
    }

    public void setEspCodigo(Especialidad espCodigo) {
        this.espCodigo = espCodigo;
    }

    public String getFopnuevoTitulo() {
        return fopnuevoTitulo;
    }

    public void setFopnuevoTitulo(String fopnuevoTitulo) {
        this.fopnuevoTitulo = fopnuevoTitulo;
    }

    public Date getFopresRecFecha() {
        return fopresRecFecha;
    }

    public void setFopresRecFecha(Date fopresRecFecha) {
        this.fopresRecFecha = fopresRecFecha;
    }

    public String getFoprevNumero() {
        return foprevNumero;
    }

    public void setFoprevNumero(String foprevNumero) {
        this.foprevNumero = foprevNumero;
    }

    public Universidad getUniCodigo() {
        return uniCodigo;
    }

    public void setUniCodigo(Universidad uniCodigo) {
        this.uniCodigo = uniCodigo;
    }

    public String getFechaPromocion(){

        String day,m,anno,fechaPromocion = null;
        SimpleDateFormat dia = new SimpleDateFormat("dd");
        dia.format(fopFechaprom);
        SimpleDateFormat mes = new SimpleDateFormat("MMMM");
        mes.format(fopFechaprom);
        SimpleDateFormat year = new SimpleDateFormat("yyyy");
        year.format(fopFechaprom);
        day = dia.format(new Date());
        m = mes.format(new Date());
        anno = year.format(new Date());
        fechaPromocion = day+" de "+m+" de "+anno;
        return fechaPromocion;
    }


        public String getFechaRecepGrado(){

        String day,m,anno,fechaRecepGrado = null;
        SimpleDateFormat dia = new SimpleDateFormat("dd");
        dia.format(fopfechaResGrado);
        SimpleDateFormat mes = new SimpleDateFormat("MMMM");
        mes.format(fopfechaResGrado);
        SimpleDateFormat year = new SimpleDateFormat("yyyy");
        year.format(fopfechaResGrado);
        day = dia.format(new Date());
        m = mes.format(new Date());
        anno = year.format(new Date());
        fechaRecepGrado = day+" de "+m+" de "+anno;
        return fechaRecepGrado;
    }


    @Override
    public int hashCode() {
        int hash = 0;
        hash += (fopCodigo != null ? fopCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof FormacionProfesional)) {
            return false;
        }
        FormacionProfesional other = (FormacionProfesional) object;
        if ((this.fopCodigo == null && other.fopCodigo != null) || (this.fopCodigo != null && !this.fopCodigo.equals(other.fopCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.colegiatura.be.FormacionProfesional[fopCodigo=" + fopCodigo + "]";
    }
}
